package test;// 文件名: MyClass.java

// 公共类，文件名与类名必须相同
public class MyClass {
    // 公共属性
    public String publicAttribute;

    // 构造方法
    public MyClass(String publicAttribute) {
        this.publicAttribute = publicAttribute;
    }

    // 公共方法
    public void publicMethod() {
        System.out.println("This is a public method. Public attribute value: " + publicAttribute);
    }

    // 主方法
    public static void main(String[] args) {
        // 创建 MyClass 实例
        MyClass myObject = new MyClass("Public attribute value");
        // 调用公共方法
        myObject.publicMethod();

        // 创建 PrivateClass 实例
        PrivateClass privateObject = new PrivateClass("Private attribute value");
        // 调用公共方法
        privateObject.publicMethod();
        // 访问私有属性（无法访问）
        // System.out.println("Private attribute value: " + privateObject.privateAttribute);

        // 创建 ProtectedClass 实例
        ProtectedClass protectedObject = new ProtectedClass("Protected attribute value");
        // 调用公共方法
        protectedObject.publicMethod();
        // 访问受保护属性（无法访问）
        // System.out.println("Protected attribute value: " + protectedObject.protectedAttribute);
    }
}

// 私有类
class PrivateClass {
    // 私有属性
    private String privateAttribute;

    // 构造方法
    public PrivateClass(String privateAttribute) {
        this.privateAttribute = privateAttribute;
    }

    // 公共方法
    public void publicMethod() {
        System.out.println("This is a public method of PrivateClass. Private attribute value: " + privateAttribute);
    }

    // 私有方法
    private void privateMethod() {
        System.out.println("This is a private method of PrivateClass.");
    }
}

// 受保护类
class ProtectedClass {
    // 受保护属性
    protected String protectedAttribute;

    // 构造方法
    public ProtectedClass(String protectedAttribute) {
        this.protectedAttribute = protectedAttribute;
    }

    // 公共方法
    public void publicMethod() {
        System.out.println("This is a public method of ProtectedClass. Protected attribute value: " + protectedAttribute);
    }
    public void publicMethod1() {
        System.out.println("This is a public method of ProtectedClass. Protected attribute value: " + protectedAttribute);
    }
    // 受保护方法
    protected void protectedMethod() {
        System.out.println("This is a protected method of ProtectedClass.");
    }
}